1
精度管理とオーバーフローの回避
AI018Lesson 3
00:00

NumPy では、 精度管理 は、メモリ効率と数値の正確性のバランスを取るためにビット深度を意図的に選択するプロセスです。標準的な Python 整数とは異なり、任意の精度を持つものではなく、固定サイズの C 型(例: int32_tuint64_t)を使用します。

1. 型の階層構造

NumPy のデータ型(dtype)はメモリ上の使用量を定義します。一方、 np.int_() はプラットフォーム依存のサイズを提供しますが、信頼性の高いシステムは 固定サイズの別名 (表:ページ 34)を用いて、ハードウェア間での一貫性を確保します。

  • 整数:int8_tint16_tint32_tint64_t
  • 符号なし:uint8_t から uint64_t
  • ポインタ:intptr_tuintptr_t

2. 情報取得ツール

算術演算を実行する前に、 np.iinfo() および np.finfo() 境界情報を確認するために使用してください。たとえば、 1 + np.finfo(np.longdouble).eps はマシンエプシロン(機械的誤差限界)を特定します——加算しても値が変化しなくなる閾値です。

整数オーバーフローラップアラウンド論理最大値 + 1 — 最小値浮動小数点飽和論理最大値を超える — 無限大(inf)

3. オーバーフローの仕組み

NumPy はオーバーフロー時にエラーを発生させません。代わりに静かに失敗します。たとえば、 np.power(100, 8, dtype=np.int32) は切り捨てされますが、一方で float64infに変化します。演算の前には、 np.issubdtype(d, np.floating) カテゴリを検証するために使用してください。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>